package com.fuhao.singleton.lazybones;

import javax.print.attribute.ResolutionSyntax;

/**
 * 单例模式之饿汉式
 * @author zhang
 */
public class Lazybones {

	/**
	 * 特点：
	 * 1.类初始化不会创建对象，需要用到时候才创建
	 * 2.线程不安全，
	 * 因为可能会出现多个线程同时创建对象
	 * 3.效率低，
	 * 因为线程不安全，就解决就要加synchronized导致效率低
	 */
	//1.私有化构造器
	private Lazybones() {}
	
	//2.创建变量
	private static Lazybones lazybones = null;
	
	//3.创建对象
	public static synchronized Lazybones getInstance() {
		if(lazybones == null) {
			//当多个线程到if里面，但还没有返回对象
			//就产生线程不安全，所以加synchronized，但效率低，只有一个线程方法
			lazybones = new Lazybones();
			System.out.println("第一次调用。。。");
			return lazybones;
		}
		System.out.println("第二次调用。。。");
		return lazybones;
	}
	
	//测试
	public static void main(String[] args) {
		Lazybones instance1 = Lazybones.getInstance();
		Lazybones instance2 = Lazybones.getInstance();
		System.out.println(instance1==instance2);
	}
}
